home *** CD-ROM | disk | FTP | other *** search
/ Reverse Code Engineering RCE CD +sandman 2000 / ReverseCodeEngineeringRceCdsandman2000.iso / RCE / Svd Messageboard Arcive / ephemery / data / MBPREP.ZIP / MERGETRE.PL < prev    next >
Encoding:
Text File  |  1999-05-21  |  1.3 KB  |  42 lines

  1.    $IN = shift;
  2.    open(IN) || die "$! $IN";
  3.       print "older tree: $IN\n";
  4.       $i=0; while (<IN>) {
  5.         s/[\r\n]+$//g; s/ +\f/\f/g; ###$_ = substr($_,2);
  6.         $xa{$_} = 1+$i; $ya[$i] = $_; $i++;
  7.        } close IN;
  8.  
  9.    $IN = shift;
  10.    open(IN) || die "$! $IN";
  11.       print "newer tree: $IN\n";
  12.       $i=0; while (<IN>) {
  13.         s/[\r\n]+$//g; s/ +\f/\f/g;
  14.         $saver[$i] = $_; $i++;
  15.        } close IN;
  16.  
  17.  
  18.    $OUT = ">new.tre";
  19.    open(OUT) || die "$! $OUT";
  20.    print "new tree: $OUT\n";
  21.  
  22.    $news=0;
  23.         #relies on unique items/lines! if same line is repeated, result is unpredictable
  24.    for ($ia=$ib=0; $ib<=$#saver && $ia<=$#ya; $ib++) {
  25.        $n = $xa{ $saver[$ib] };
  26.        if ($n) {          #(!) it is 1 more
  27.           for ( ;$ia<$n;$ia++) { print OUT "$ya[$ia]\n"; }
  28.           ($level,$mail,$name,$mssg,$subj,$date) = split( "\f", $saver[$ib]);
  29.           undef $longnames{$mssg};      #remove available messages
  30.         } else {
  31.           print OUT "$saver[$ib]\n";
  32.           $news++;
  33.         }
  34.    }
  35.    for ( ;$ib<=$#saver;$ib++) { print OUT "$saver[$ib]\n"; $news++; }
  36.    for ( ;$ia<=$#ya;$ia++)    { print OUT "$ya[$ia]\n";
  37.      ($level,$mail,$name,$mssg,$subj,$date) = split( "\f", $ya[$ia]);
  38.      undef $longnames{$mssg};      #remove available messages
  39.    }
  40.    close OUT;
  41.    print "new messages ($news)\n";
  42.